*&---------------------------------------------------------------------*
*& Report ZEX_LISTING_618                                              *
*&---------------------------------------------------------------------*
*& Created By: James Wood (james.wood@bowdarkconsulting.com)           *
*& Created On: 12/12/2008                                              *
*& Purpose:    This program shows how to work with aliases in          *
*&             interfaces.                                             *
*&---------------------------------------------------------------------*
REPORT zex_listing_618.

*----------------------------------------------------------------------*
*       INTERFACE lif_component
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE lif_component.

  METHODS: c1,
           c2.

ENDINTERFACE.                    "lif_component

*----------------------------------------------------------------------*
*       INTERFACE lif_nested
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE lif_nested.

  INTERFACES: lif_component.

  ALIASES: c1 FOR lif_component~c1,
           c2 FOR lif_component~c2.

  METHODS: n1,
           n2.

ENDINTERFACE.                    "lif_nested

*----------------------------------------------------------------------*
*       CLASS lcl_nested_impl DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_nested_impl DEFINITION.

  PUBLIC SECTION.
    INTERFACES: lif_nested.

ENDCLASS.                    "lcl_nested_impl DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_nested_impl IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_nested_impl IMPLEMENTATION.

  METHOD lif_nested~n1.
    WRITE: / 'In lif_nested~n1.'.
  ENDMETHOD.                    "lif_nested~n1

  METHOD lif_nested~n2.
    WRITE: / 'In lif_nested~n2.'.
  ENDMETHOD.                    "lif_nested~n2

  METHOD lif_nested~c1.
    WRITE: / 'In lif_nested~c1.'.
  ENDMETHOD.                    "lif_nested~c1

  METHOD lif_nested~c2.
    WRITE: / 'In lif_nested~c2.'.
  ENDMETHOD.                    "lif_nested~c2

ENDCLASS.                    "lcl_nested_impl IMPLEMENTATION

*----------------------------------------------------------------------*
* START-OF-SELECTION Event Module                                      *
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM test_aliases.

*&---------------------------------------------------------------------*
*&      Form  test_aliases
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM test_aliases.

* Local Data Declarations:
  DATA: lr_nested_impl TYPE REF TO lcl_nested_impl.

* Create an object of the implementing class:
  CREATE OBJECT lr_nested_impl.

* Call the implemented methods. Note that the aliased methods can be
* referenced as lif_nested~c1 or lif_component~c1.
  CALL METHOD lr_nested_impl->lif_nested~n1.
  CALL METHOD lr_nested_impl->lif_nested~n2.
  CALL METHOD lr_nested_impl->lif_nested~c1.
  CALL METHOD lr_nested_impl->lif_nested~c2.

ENDFORM.                    "test_aliases